Computers are complex machines that allow individuals to receive the benefit of significant computational processing power. However, even with sophisticated software, computers merely perform the functions they are specifically programmed to do and generally do not account for differences in users when performing such functions. The computer is generally ignorant of the user's needs. For example, when a user performs a search for information via a computer, the quality of search and thus the quality of the search result will be confined explicitly to what the search system is programmed to return and to the terms provided by the user.
While past computers merely provide pre-programmed results, much work has been done in the area of artificial intelligence (“AI”), which can be defined as any attempt to allow human thinking characteristics (or the artificial representation of such human thinking characteristics). Generally, intelligence is the ability to adapt one's behavior to fit new circumstances. Thus, the goals of AI are to do things with a computer that require intelligence when done by humans. However, some of the difficulties in building an intelligent machine include deduction and learning. Deduction systems have been designed but they can require enormous computational resources once the problem goes beyond a certain size. Rote learning is relatively easy to implement on a computer; however, learning that allows the learner to perform better in situations not previously encountered is much more difficult.